/*
 * @Description: 路由主文件
 * @Author: Yong
 * @Date: 2021-04-23 15:29:54
 * @LastEditTime: 2021-09-11 10:24:56
 */
import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

/* Router Modules */
import employeesRouter from './modules/employees'
import approvalsRouter from './modules/approvals'
import departmentsRouter from './modules/departments'
import permissionRouter from './modules/permission'
import attendancesRouter from './modules/attendances'
import salarysRouter from './modules/salarys'
import settingRouter from './modules/setting'
import socialRouter from './modules/social'



export const constantRoutes = [
    {
        path: '/login',
        component: () => import('@/views/login/index'),
        hidden: true
    },
    {
        path: '/404',
        component: () => import('@/views/error-page/404'),
        hidden: true
    },
    {
        path: '/401',
        component: () => import('@/views/error-page/401'),
        hidden: true
    },
    {
        path: '/',
        component: Layout,
        redirect: '/dashboard',
        children: [
            {
                path: 'dashboard',
                component: () => import('@/views/dashboard/index'),
                name: 'Dashboard',
                meta: { title: '首页', icon: 'dashboard', affix: true }
            }
        ]
    },
    {
        path: '/import',
        component: Layout,
        hidden: true,
        children: [
            {
                path: '', // 二级路由path什么都不写 表示二级默认路由
                component: () => import('@/views/import/index')
            }
        ]
    },
    // permissionRouter
    // 404 page must be placed at the end !!!
]

/**
 * asyncRoutes
 * the routes that need to be dynamically loaded based on user roles
 */
export const asyncRoutes = [
    approvalsRouter,
    departmentsRouter,
    employeesRouter,
    permissionRouter,
    attendancesRouter,
    salarysRouter,
    settingRouter,
    socialRouter
]

const createRouter = () => new Router({
    mode: 'history', // require service support
    base: 'hr/',
    scrollBehavior: () => ({ y: 0 }),
    routes: [...constantRoutes]
})

const router = createRouter()

// 重置路由 - 初始化路由
export function resetRouter () {
    const newRouter = createRouter()
    router.matcher = newRouter.matcher // reset router
}

export default router
